package Operations;

public class characterGenerator {

	private static final char[] BASE_CHARACTERS = {
		' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
		'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
		'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
	};

	private static final char[] SPECIAL_CHARACTERS = {
		'\0', ' ', '\n', '\r', '\t',
		'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
		'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
		'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
		'.', ',', ';', ':', '-',  '+', '?', '!', '\'', '`', '"',
		163, '$', 8364, '%', '&', '/', '(', ')', '=', '^', '#', 176, '[', ']', '{', '}', '~' };

	public static char getCharacter() {
		float nextFloat = ValuesGenerator.getRandomFloat();

		if(nextFloat < Operation.GEN_BASIC_VALUES)
			return BASE_CHARACTERS[ValuesGenerator.getRandomInt(BASE_CHARACTERS.length)];

		if(nextFloat < Operation.GEN_BASIC_VALUES + Operation.LIMITED_VALUES)
			return SPECIAL_CHARACTERS[ValuesGenerator.getRandomInt(SPECIAL_CHARACTERS.length)];

		return (char) ValuesGenerator.getRandomInt(256);
	}


	  public static void main(String args[]) {
	//	  characterGenerator gen = new characterGenerator();
	    while(true)
	      System.out.println(getCharacter());
	    
	  }


}
